From 1e299a6c9eeb08555208b76623e453d8ab96b6e3 Mon Sep 17 00:00:00 2001
From: James Hilliard <james.hilliard1@gmail.com>
Date: Fri, 4 Feb 2022 16:16:35 -0700
Subject: [PATCH] Add python3 build support

Adapted from:
https://github.com/archlinux/svntogit-packages/blob/6edf5f1aaea952d046aff89a2e0175258fe77361/trunk/qt5-webengine-python3.patch

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
 configure.pri                     | 13 ++++++-------
 mkspecs/features/functions.prf    |  6 +++---
 src/buildtools/config/support.pri | 10 +++++-----
 src/buildtools/configure.json     | 18 +++++++++---------
 4 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/configure.pri b/configure.pri
index e072961f..6fec7b20 100644
--- a/configure.pri
+++ b/configure.pri
@@ -13,8 +13,7 @@ defineTest(isPythonVersionSupported) {
     python_version = $$split(python_version, ',')
     python_major_version = $$first(python_version)
     greaterThan(python_major_version, 2) {
-        qtLog("Python version 3 is not supported by Chromium.")
-        return(false)
+        return(true)
     }
     python_minor_version = $$member(python_version, 1)
     python_patch_version = $$member(python_version, 2)
@@ -52,10 +51,10 @@ defineTest(qtConfReport_jumboBuild) {
     qtConfReportPadded($${1}, $$mergeLimit)
 }
 
-defineTest(qtConfTest_detectPython2) {
-    python = $$qtConfFindInPath("python2$$EXE_SUFFIX")
+defineTest(qtConfTest_detectPython) {
+    python = $$qtConfFindInPath("python$$EXE_SUFFIX")
     isEmpty(python) {
-        qtLog("'python2$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
+        qtLog("'python$$EXE_SUFFIX' not found in PATH. Checking for 'python$$EXE_SUFFIX'.")
         python = $$qtConfFindInPath("python$$EXE_SUFFIX")
     }
     isEmpty(python) {
@@ -63,11 +62,11 @@ defineTest(qtConfTest_detectPython2) {
         return(false)
     }
     !isPythonVersionSupported($$python) {
-        qtLog("A suitable Python 2 executable could not be located.")
+        qtLog("A suitable Python executable could not be located.")
         return(false)
     }
 
-    # Make tests.python2.location available in configure.json.
+    # Make tests.python.location available in configure.json.
     $${1}.location = $$clean_path($$python)
     export($${1}.location)
     $${1}.cache += location
diff --git a/mkspecs/features/functions.prf b/mkspecs/features/functions.prf
index 2750d707..9fda13d0 100644
--- a/mkspecs/features/functions.prf
+++ b/mkspecs/features/functions.prf
@@ -39,11 +39,11 @@ defineReplace(which) {
 
 # Returns the unquoted path to the python executable.
 defineReplace(pythonPath) {
-    isEmpty(QMAKE_PYTHON2) {
+    isEmpty(QMAKE_PYTHON) {
         # Fallback for building QtWebEngine with Qt < 5.8
-        QMAKE_PYTHON2 = python
+        QMAKE_PYTHON = python
     }
-    return($$QMAKE_PYTHON2)
+    return($$QMAKE_PYTHON)
 }
 
 # Returns the python executable for use with shell / make targets.
diff --git a/src/buildtools/config/support.pri b/src/buildtools/config/support.pri
index e7f869a1..1bf2c5d7 100644
--- a/src/buildtools/config/support.pri
+++ b/src/buildtools/config/support.pri
@@ -21,7 +21,7 @@ defineReplace(qtwebengine_checkWebEngineCoreError) {
     !qtwebengine_checkForGperf(QtWebEngine):return(false)
     !qtwebengine_checkForBison(QtWebEngine):return(false)
     !qtwebengine_checkForFlex(QtWebEngine):return(false)
-    !qtwebengine_checkForPython2(QtWebEngine):return(false)
+    !qtwebengine_checkForPython(QtWebEngine):return(false)
     !qtwebengine_checkForNodejs(QtWebEngine):return(false)
     !qtwebengine_checkForSanitizer(QtWebEngine):return(false)
     linux:!qtwebengine_checkForPkgCfg(QtWebEngine):return(false)
@@ -51,7 +51,7 @@ defineReplace(qtwebengine_checkPdfError) {
     !qtwebengine_checkForGperf(QtPdf):return(false)
     !qtwebengine_checkForBison(QtPdf):return(false)
     !qtwebengine_checkForFlex(QtPdf):return(false)
-    !qtwebengine_checkForPython2(QtPdf):return(false)
+    !qtwebengine_checkForPython(QtPdf):return(false)
     !qtwebengine_checkForSanitizer(QtPdf):return(false)
     linux:!qtwebengine_checkForPkgCfg(QtPdf):return(false)
     linux:!qtwebengine_checkForHostPkgCfg(QtPdf):return(false)
@@ -143,10 +143,10 @@ defineTest(qtwebengine_checkForFlex) {
     return(true)
 }
 
-defineTest(qtwebengine_checkForPython2) {
+defineTest(qtwebengine_checkForPython) {
     module = $$1
-    !qtConfig(webengine-python2) {
-        qtwebengine_skipBuild("Python version 2 (2.7.5 or later) is required to build $${module}.")
+    !qtConfig(webengine-python) {
+        qtwebengine_skipBuild("Python is required to build $${module}.")
         return(false)
     }
     return(true)
diff --git a/src/buildtools/configure.json b/src/buildtools/configure.json
index 88d1790c..032aa665 100644
--- a/src/buildtools/configure.json
+++ b/src/buildtools/configure.json
@@ -295,9 +295,9 @@
             "label": "system ninja",
             "type": "detectNinja"
         },
-        "webengine-python2": {
-            "label": "python2",
-            "type": "detectPython2",
+        "webengine-python": {
+            "label": "python",
+            "type": "detectPython",
             "log": "location"
         },
         "webengine-winversion": {
@@ -374,7 +374,7 @@
                          && features.webengine-gperf
                          && features.webengine-bison
                          && features.webengine-flex
-                         && features.webengine-python2
+                         && features.webengine-python
                          && features.webengine-nodejs
                          && (!config.sanitizer || features.webengine-sanitizer)
                          && (!config.linux || features.pkg-config)
@@ -400,7 +400,7 @@
                          && features.webengine-gperf
                          && features.webengine-bison
                          && features.webengine-flex
-                         && features.webengine-python2
+                         && features.webengine-python
                          && (!config.sanitizer || features.webengine-sanitizer)
                          && (!config.linux || features.pkg-config)
                          && (!config.linux || features.webengine-host-pkg-config)
@@ -423,12 +423,12 @@
             "autoDetect": "features.private_tests",
             "output": [ "privateFeature" ]
         },
-        "webengine-python2": {
-            "label": "python2",
-            "condition": "tests.webengine-python2",
+        "webengine-python": {
+            "label": "python",
+            "condition": "tests.webengine-python",
             "output": [
                 "privateFeature",
-                { "type": "varAssign", "name": "QMAKE_PYTHON2", "value": "tests.webengine-python2.location" }
+                { "type": "varAssign", "name": "QMAKE_PYTHON", "value": "tests.webengine-python.location" }
             ]
         },
         "webengine-gperf": {
-- 
2.25.1

